package com.hzx.shoot.img;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;

/*
 * 专门用于加载不同子类需要的图片
 * */
public class Images {//因为英雄有两张图片 所以也变为数组
    public static BufferedImage[] heroImage;
    public static BufferedImage skyImage;
    public static BufferedImage bulletImage;
    //  public static BufferedImage backgroundImage;
    public static BufferedImage myImage;
    public static BufferedImage startImage;
    public static BufferedImage purseImage;
    public static BufferedImage gameoverImage;
    //代表的是敌人类 变为数组 因为 敌人要爆炸 还要加入爆炸的图片
    public static BufferedImage[] bigAirplaneImage;
    public static BufferedImage[] airplaneImage;
    public static BufferedImage[] beeImage;

    /*
     * 因要一开始运行代码就要对图片进行初始化 所以使用静态块的来
     * ImageIO 代表的读取流   反射机制
     * Images.class 因为Image本来就是一个类所以只需.class
     * this.Image.getClass()  this是属于对象的 而static是属于类的  在这边是类 所以不可以用
     * */
    static {
        /*
         * java中的异常处理
         * 1.异常分为两类：检查异常和非检查异常(运行时异常)
         * */
        //hero只有两张
        heroImage = new BufferedImage[2];//开辟对象空间
        heroImage[0] = readImage("hero0.png");
        heroImage[1] = readImage("hero1.png");


        skyImage = readImage("background.png");
        bulletImage = readImage("bullet.png");


        beeImage = new BufferedImage[5];
        bigAirplaneImage = new BufferedImage[5];
        airplaneImage = new BufferedImage[5];

        beeImage[0] = readImage("bee.png");
        bigAirplaneImage[0] = readImage("bigairplane.png");
        airplaneImage[0] = readImage("airplane.png");
        //因为爆炸的照片有4张 加上自己的一张=5  并且已经初始化0的一张 所以从1开始
        for (int i = 1; i < 5; i++) {
            bigAirplaneImage[i] = readImage("bom" + i + ".png");
            airplaneImage[i] = readImage("bom" + i + ".png");
            beeImage[i] = readImage("bom" + i + ".png");

        }
        myImage = readImage("my.png");

        startImage = readImage("start.png");
        purseImage = readImage("purse.png");
        gameoverImage = readImage("gameover.png");


    }

    //因为要调用上面的静态代码块 所以这边需要静态方法
    //读取和加载图片的方法  imageName需要读取的名称
    public static BufferedImage readImage(String ImageName) {
        BufferedImage image = null;
        try {//使用URL的方式不是用IO流
            image = ImageIO.read(Images.class.getResource(ImageName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        return image;

    }


}
